<?php

namespace app\admin\model;

use think\Model;
use Db;
class GoodsType extends Model
{
    //取出所有的分类
    public function getGoodsType(){
        $user = self::all();

        foreach ( $user  as $v){
            $data[] = $v->toArray();
        }
       // 递归重新排序
       $ret = $this->_tree($data);
       return $ret;
    }
    //取出一级分类
    public function topCat(){
        $user = self::where('pId',0)->select();
        foreach ($user as $v){
            $data[] = $v->toArray();
        }
      return $data;
    }

    //根据父ID取出对应的子类
    public function getCat($pId)
    {
        $user = self::where('pId',$pId)->select();
        foreach ($user as $v){
            $data[] = $v->toArray();
        }
      return $data;
    }

    // 递归树形结构的数据
    public function tree($data)
    {
        
        // 递归重新排序
        $ret = $this->_tree($data);
        return $ret;
    }

    // 递归排序（本类和子本可以调用（protected））
    // 参数一、排序的数据
    // 参数二、上级ID
    // 参数三、第几级
    protected function _tree($data, $parent_id=0, $level=0)
    {
        // 定义一个数组保存排序好之后的数据
        static $_ret = [];
        foreach($data as $v)
        {
            if($v['pId'] == $parent_id)
            {
                // 标签它的级别
                $v['level'] = $level;
                // 挪到排序之后的数组中
                $_ret[] = $v;
                // 找 $v 的子分类
                $this->_tree($data, $v['id'], $level+1);
             }
        }
        // 返回排序好的数组
        return $_ret;
    }
    
    //根据传过来的pId 插入新的子分类
    public function insert($params)
    {
        $data = ['name' => $params['name'], 'pId' => $params['pId']];
        Db::name('self')->insert($data, true);  
    }
}
